home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Enigma Amiga CD / Listati / 60-Gennaio-esempio2.c < prev    next >
C/C++ Source or Header  |  1992-09-02  |  2KB  |  48 lines

  1. /**************************************************************************
  2. * Esempio 2                                                               *
  3. * Aggiunge un interrupt alla lista dei servers per l'interruzione al      *
  4. * vertical blank; l'interrupt incrementa semplicemente la variabil il cui *
  5. * indirizzo e' presente in is_Data                                        *
  6. **************************************************************************/
  7.  
  8. /* inclusione file di supporto */
  9. #include <exec/types.h>
  10. #include <exec/memory.h>
  11. #include <exec/interrupts.h>
  12. #include <dos.h>
  13. #include <hardware/custom.h>
  14. #include <hardware/intbits.h>
  15. #include <clib/exec_protos.h>
  16. #include <clib/alib_protos.h>
  17.  
  18. /* prototipo della funzione di interrupt */
  19. void VertBServer();
  20.  
  21. void main()
  22. {
  23.   struct Interrupt *vertblankint;
  24.   ULONG cont = 0;
  25.   
  26.   if ((vertblankint = (struct Interrupt *)AllocMem(sizeof(struct Interrupt),MEMF_CLEAR|MEMF_PUBLIC)) == NULL)
  27.   {
  28.     printf("Non posso allocare memoria.\n");
  29.     exit(0);
  30.   }
  31.   /* preparazione struttura Interrupt */
  32.   vertblankint -> is_Node.ln_Type = NT_INTERRUPT;
  33.   vertblankint -> is_Node.ln_Pri = 0;
  34.   vertblankint -> is_Node.ln_Name = "esempio2_vbint";
  35.   vertblankint -> is_Data = (APTR)&cont;
  36.   vertblankint -> is_Code = VertBServer;
  37.  
  38.   /* inserimento dell'interrupt */
  39.   AddIntServer(INTB_VERTB,vertblankint);
  40.   printf("Conteggio quadri video; premere CTRL C per finire.\n");
  41.   Wait(SIGBREAKF_CTRL_C);
  42.   printf("Numero vertical blank - %ld\n",cont);
  43.   /* rimozione dell'interrupt */
  44.   RemIntServer(INTB_VERTB,vertblankint);
  45.   
  46.   FreeMem(vertblankint,sizeof(struct Interrupt));
  47. }
  48.